index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use client";
  2. import { FC, MouseEventHandler, PropsWithChildren, } from "react";
  3. import {Modal, ModalContent, ModalBody, ModalFooter, useDisclosure} from "@nextui-org/react";
  4. import "./style.scss";
  5. import { useGlobalStore } from '@/stores';
  6. import { useRouter } from "@/i18n";
  7. import {getLogoutApi} from "@/api/user";
  8. import { useTranslations } from "next-intl";
  9. /**
  10. * @description 底部组件
  11. */
  12. export interface ItemComProps {
  13. type?: string;
  14. callbackFun?: (params: any) => void;
  15. }
  16. const ModalCom: FC<PropsWithChildren<ItemComProps>> = () => {
  17. const t = useTranslations("ProfilePage");
  18. const { token, setToken, setUserInfo } = useGlobalStore();
  19. const { isOpen, onOpen, onClose, onOpenChange } = useDisclosure();
  20. const logoutRequest = async () => {
  21. let res = await getLogoutApi()
  22. if(res.code == 200) {
  23. onClose()
  24. setUserInfo('')
  25. setToken('')
  26. router.replace('/login')
  27. }
  28. }
  29. const router = useRouter();
  30. const goPage = (path = '/') => {
  31. router.push(path)
  32. }
  33. return (
  34. <>
  35. {/* {
  36. token ? <span className="logOut" onClick={onOpen}>{t('Sair')}</span> : (
  37. <span className="logOut" onClick={() => goPage('/login')}>{t('Login')}</span>
  38. )
  39. } */}
  40. {
  41. <span className="logOut" onClick={onOpen}>{t('Sair')}</span>
  42. }
  43. <Modal
  44. backdrop="opaque"
  45. isOpen={isOpen}
  46. size="5xl"
  47. placement={'center'}
  48. onOpenChange={onOpenChange}
  49. hideCloseButton={true}
  50. classNames={{
  51. body: "body1-box",
  52. footer: "footer1-box",
  53. }}
  54. >
  55. <ModalContent>
  56. {(onClose: MouseEventHandler<HTMLSpanElement> | undefined) => (
  57. <>
  58. <ModalBody>
  59. <p className="modal-p-box">{t('Deseja')}</p>
  60. </ModalBody>
  61. <ModalFooter>
  62. <span className="modal-span-box" onClick={onClose}>
  63. {t('Cancelar')}
  64. </span>
  65. <span className="modal-span-box active" onClick={logoutRequest}>
  66. {t('Continuar')}
  67. </span>
  68. </ModalFooter>
  69. </>
  70. )}
  71. </ModalContent>
  72. </Modal>
  73. </>
  74. );
  75. };
  76. export default ModalCom;